查看原文
其他

多角度展现 Linux 集群之美

余洪春 华章计算机 2022-10-26

在很长一段时间内,开发和运维的工作泾渭分明、互不干涉,只有在系统出现故障时,双方才会认真地打个照面,长此以往,摩擦和误会必然存在。


此时,有经验的运维工程师会考虑将一部分手动工作脚本化,以减少人为操作失误,从而提高工作效率;而有经验的开发工程师会考虑将自己的系统变得更加友好,以降低事故率和缩短排查时间。


随着时间的推移,产品的用户量越来越大,单机单体的架构已经不足以支撑海量请求,工程师们开始考虑用分布式服务集群来缓解单机压力。至此,微服务架构应运而生。围绕着微服务架构有很多技术,比如统一网关、注册中心与服务发现、负载均衡等。


此时,优秀的开发和运维工程师们又开始考虑另一个问题:现在的服务越来越多,版本发布越来越频繁,非常容易出现人为故障,系统也总处于不稳定的状态,我们该如何优化整个交付流程呢?


DevOps 正是解决该问题的良方,它打破了开发、测试与运维之间的壁垒,将整个 CI&CD 流水线化、智能化。


但这还不够,对于大规模微服务架构,我们可能会更进一步关注资源与效率问题,比如服务(或机器)能否弹性扩容,能否在资源出现异常时有足够的韧性提供持续服务等。


随着云计算、容器化、微服务框架等技术的发展,业界提出了云原生架构。它旨在将系统中的非核心业务代码剥离出来,让 IaaS 和 PaaS 接管,而在实现 CI&CD 时,直接通过 Docker 镜像进行交付,配以 Kubernetes 进行容器编排,让整个应用服务处于灵活部署、灵活扩展且资源可检测的状态。


可以看到,在技术架构不断演进的过程中,运维工程师所需的能力栈也在发生变化。从最开始的手工运维到脚本化运维,再到基于云原生架构的自动化运维,运维工程师逐渐将触角延伸到开发领域,最终和开发人员共同承担系统稳定性保障的责任,这其实非常考验工程师的综合能力。


那么如何系统学习,掌握以上这些能力呢?推荐你阅读这本《 Linux 集群之美》


    


本书内容基本能涵盖一名优秀工程师应该掌握的所有运维技能(不仅限于运维工程师)。不仅覆盖了 Python 开发、 Linux 集群负载(LVS、HAProxy、Nginx 等)等基础内容,还包含了云原生微服务架构下的 Kubernetes、Service Mesh 服务网格 Istio 等前沿技术。


同时,作者还用亲身经历的亿级流量系统来讲解高并发系统的架构该如何设计。书中提供的 Python 程序均来自真实项目,可以直接借用。关于 Linux 集群的项目实践和 MySQL 的高可用方案,大家也可以根据实际项目的需求直接用于公司的网站架构。





目标读者


  • 系统工程师或运维工程师

系统工程师和运维工程师可以重点关注第4~7章的内容,这些都是与运维工作息息相关的,建议大家多花些精力和时间,从线上环境去考虑学习。


  • DevOps工程师

DevOps 工程师可以重点关注第2~8章的内容,想在企业运维开发工作中开发高效的运维工具并不是一件很容易的事情,建议大家多学习,拓宽自己的知识面。


  • 系统开发工程师

对于开发人员来说,由于已具备很强的编程开发能力,可以重点关注第2章和第3章之外的章节,以提升自己的技术。


  • 运维架构师

运维架构师可以重点关注第4~5章和第7~8章的内容,这些都跟系统/网站架构技术息息相关,而且基本上都出自真实项目经验,具备一定的参考意义。


  • 网络管理员或企业网管

本书是对实际工作经验的总结,涉及大量的知识点和专业术语,建议经验还不是很丰富的读者先了解第1~2章的内容,如果大家在学习过程中根据这两章的讲解进行操作,定会达到事半功倍的效果。





本书特色


  • 基于真实的电子商务系统和CDN系统着重介绍了 Nginx/HAProxy+Keepalived 、 LVS+Keepalived/DR 及 DNS 轮询等常见的 Web 集群负载均衡高可用技术,除此之外,还介绍了 ZooKeeper 集群在分布式系统中的应用。


  • MySQL 高可用架构目前主要是以 MySQL 5.7 为主,书中针对 DRBD+Heartbeat 、 MySQL MHA 及基于 GTID 的 MySQL 主从复制工具 mysql-utilities 进行了详细说明。


  • 基于笔者目前维护的容器云平台(包括 Kubernetes 和 Mesos 集群)介绍云原生环境下的负载均衡技术的具体实现,例如 HAProxy、IPVS 及 Ingress-Controller 等,重点介绍了 Nginx/Traefik Ingress-Controller 在 Kubernetes 集群系统中的部署和应用。


  • 以笔者维护过的千万级/亿级 PV 高并发高流量网站架构为例来说明网站的系统架构设计,并且分享了秒杀系统的架构设计思想。






关于作者




余洪春(抚琴煮酒)


高级 DevOps 、系统架构师 ,从事电子商务网站和大型 CDN 系统运维、架构设计工作十余年,在 Linux 集群、自动化运维、Kubernetes/Mesos云原生平台及高并发高流量网站架构设计等方面有深入研究,通过大量一线实践积累了丰富的经验,精通负载均衡高可用技术、DevOps 及容器技术等。51CTO 和 ChinaUnix 等知名社区的特邀专家,51CTO 系统网络频道的专栏作家,ChinaUnix 论坛“集群和高可用”及“监控及自动化运维”版版主,在社区内发表了大量技术文章,深受网友好评。





本书结构


第1章 Linux集群基础概念  1

1.1 Linux集群涉及的核心概念及常用软件  2

1.1.1 什么是负载均衡高可用  2

1.1.2 什么是服务发现  3

1.1.3 以LVS作为负载均衡器  4

1.1.4 以Nginx作为负载均衡器  9

1.1.5 以HAProxy作为负载均衡器  10

1.1.6 高可用软件Keepalived  10

1.1.7 高可用软件Heartbeat  11

1.1.8 高可用块设备DRBD  11

1.2 负载均衡关键技术  13

1.2.1 负载均衡算法  13

1.2.2 Session共享和会话保持  17

1.3 负载均衡器的会话保持机制  19

1.3.1 负载均衡器的会话保持处理机制  19

1.3.2 LVS的持久连接机制  20

1.3.3 Nginx负载均衡器的ip_hash算法  24

1.3.4 HAProxy负载均衡器的source算法  25

1.3.5 基于cookie的会话保持处理机制  29

1.4 服务器健康检测  33

1.5 L4和L7负载均衡器对比  34

1.6 集群内(外)负载均衡  34

1.7 软件级负载均衡器的特点介绍与对比  35

1.8 小结  36

第2章 Python的基础概念及进阶知识  37

2.1 Python语言的应用领域  37

2.2 选择Python的原因  39

2.3 Python的版本说明  40

2.4 如何高效地进行Python开发工作  40

2.4.1 IPython的功能介绍  40

2.4.2 利用virtualenv隔离项目  46

2.4.3 PyCharm简介  47

2.5 Python基础知识介绍  51

2.5.1 正则表达式的应用  51

2.5.2 Python程序的构成  58

2.5.3 Python的编码问题  60

2.5.4 使用Python解析JSON  63

2.5.5 Python异常处理与程序调试异常  64

2.5.6 Python函数  67

2.5.7 Python的面向对象  79

2.5.8 Python的多进程和多线程  91

2.5.9 Python协程  105

2.6 小结  109

第3章 Python在Linux集群中的实践应用  110

3.1 Python经常用到的第三方类库  110

3.2 工作中常用的Python脚本  111

3.2.1 利用Python比较应用  111

3.2.2 利用Python获取数据库证书并替换成文件字符串  112

3.2.3 利用Python处理JSON式文件  113

3.3 利用Flask Web框架设计RESTful API  114

3.3.1 后端开发工作中为什么要使用RESTful API   114

3.3.2 项目实战  117

3.4 利用Nginx+Gunicorn+Flask部署Python项目  119

3.5 利用Flask+ Gevent搭建webssh  128

3.6 小结  137

第4章 轻量级自动化运维工具Fabric介绍  138

4.1 Vagrant简介  139

4.1.1 Vagrant的安装  139

4.1.2 使用Vagrant配置本地开发环境  141

4.1.3 使用Vagrant搭建本地开发环境  148

4.1.4 使用Vagrant搭建分布式环境  153

4.2 轻量级自动化运维工具Fabric  162

4.2.1 Paramiko版本库简介  162

4.2.2 Fabric的安装  164

4.2.3 Fabric的命令行入口fab命令详解  165

4.2.4 Fabric的环境变量设置  166

4.2.5 Fabric的核心API  167

4.2.6 Fabric的执行逻辑  171

4.3 Fabric在工作中的应用实例  173

4.3.1 开发环境中的Fabric应用实例  173

4.3.2 工作场景中常见的Fabric应用实例  174

4.4 Fabric在性能方面的不足  180

4.5 小结  180

第5章 Linux集群项目案例  181

5.1 Linux集群的项目案例详解  181

5.1.1 项目案例一:LVS在项目中的优化设计思路  181

5.1.2 项目案例二:用Nginx+Keepalived实现在线票务系统  184

5.1.3 项目案例三:企业级Web负载均衡高可用之Nginx+Keepalived  188

5.1.4 项目案例四:HAProxy双机高可用方案HAProxy+Keepalived  198

5.2 利用HAProxy代理WebSocket集群  203

5.3 巧用DNS轮询进行负载均衡  206

5.4 利用ZooKeeper集群来搭建分布式系统  211

5.5 小结  218

第6章 云原生环境下的负载均衡实现  219

6.1 私有化部署Kubernetes集群  220

6.1.1 部署Kubernetes集群环境的准备工作  220

6.1.2 Nexus3私有仓库在集群内的暴露使用  221

6.1.3 部署Kubernetes集群  222

6.1.4 Kubernetes集群数据如何持久化  228

6.2 负载均衡的具体实现  232

6.2.1 以iptables作为集群的负载均衡  232

6.2.2 以IPVS作为集群的负载均衡  241

6.2.3 服务发现  243

6.2.4 Ingress-Controller的介绍  245

6.3 小结  264

第7章 MySQL高可用集群项目案例  265

7.1 MySQL数据库的安装  265

7.2 服务器物理硬件的选择  267

7.3 MySQL数据库的优化  267

7.4 MySQL主从复制流程与原理  270

7.5 MySQL主从复制的搭建  271

7.5.1 MySQL主从复制环境介绍  271

7.5.2 影响MySQL主从复制的配置选项  272

7.5.3 MySQL主从复制的实现过程  273

7.6 MySQL MHA集群案例  274

7.6.1 MHA安装前的准备工作  275

7.6.2 源码安装MHA程序  276

7.6.3 MHA的实际安装和部署流程  277

7.6.4 MHA manager的压测  284

7.6.5 设置MHA manager为守护进程  290

7.7 MySQL DRBD高可用案例  291

7.7.1 MySQL DRBD相关组件原理介绍  292

7.7.2 MySQL DRBD的具体搭建过程  293

7.7.3 MySQL SysBench的基准测试  308

7.8 利用mysql-utilities工具自动切换主从复制  308

7.8.1 基于GTID的主从复制  308

7.8.2 mysql-utilities工具的二次开发  318

7.9 用XtraBackup工具备份和恢复数据库  319

7.9.1 XtraBackup的安装过程  319

7.9.2 XtraBackup的运行原理  319

7.9.3 XtraBackup备份及恢复过程  321

7.10 小结  322

第8章 高可用高并发系统架构设计  323

8.1 系统性能评估指标  323

8.2 网站架构设计规划预案  324

8.2.1 合理设计与规划  324

8.2.2 核心系统的开发设计  325

8.2.3 规划好网站未来的发展  325

8.2.4 合理选用开源软件方案  326

8.2.5 机房及CDN选型  326

8.2.6 CI/CD及蓝绿部署发布  327

8.2.7 系统安全问题  327

8.3 千万级PV、高性能、高并发网站的架构设计  328

8.4 亿级PV、高性能、高并发网站的架构设计  332

8.5 秒杀系统的架构设计  339

8.6 小结  343

第9章 Linux集群的总结和思考  344

9.1 集群与分布式系统的区别  344

9.2 了解微服务及其组件  346

9.3 现阶段如何保证高可用  349

9.4 小结  351

附录A Docker进阶操作总结  352

附录B 利用Nexus3配置CI/CD的私有仓库  358

附录C XtraBackup备份工具的详细测试  365


上下滑动查看



最后,希望大家能通过本书掌握 Linux 集群的精髓,领会 Linux 集群的魅力,通过 Python 程序实现自动化运维和编程,从而轻松愉快地工作。





扫码关注【CSAPP】视频号



更多精彩回顾



书讯 | 12月书讯(上) | 冬夜寒冷,读书暖心,华章科技上新啦!书讯 | 12月书讯(下) | 冬夜寒冷,读书暖心,华章科技上新啦!
资讯 | IEEE发布2022年科技趋势全球调研:人工智能和机器学习、云计算及5G将成为下一年最重要的技术书单 | 8本书助你零基础转行数据分析岗干货 | 周志明论架构之道:后微服务时代与无服务时代收藏 | 盘点云原生的5大特征上新 | 【新书速递】Django3.0应用开发详解


点击阅读全文购买

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存